#ifndef LOGPLUGIN_H
#define LOGPLUGIN_H

#include <QObject>
#include <QtPlugin>
#include "CameraPluginInterface.h"
#include "LogWidget.h"

class LogPlugin : public CameraPluginInterface {
    Q_OBJECT
    Q_INTERFACES(CameraPluginInterface)
    Q_PLUGIN_METADATA(IID "Camera.LogPlugin/1.0")

public:
    LogPlugin(QObject *parent=nullptr);
    ~LogPlugin() override;
    void initialize() override;
    QString pluginName() const override;
    QString description() const override;
    /**
     * @brief 记录日志消息
     * @param sender 发送者名称
     * @param message 日志内容
     * @param level 日志级别（默认为LOG_INFO）
     * @param writeToFile 是否写入文件（默认为true）
     */
    Q_INVOKABLE void logMessage(const QString &sender, const QString &message, LogType level = LogType::LOG_INFO, bool writeToFile = true);
private:
    /**
     * @brief 处理日志指令消息
     * @param sender 发送消息的插件名称
     * @param message 日志消息内容（不包含CMD_LOG前缀）
     */
    void processLogMessage(const QString& sender, const QString& message);
public slots:
    void onPluginMessage(const QString& sender, const QString& message) override;
private:
    LogWidget *logWidget = nullptr;
};


#endif // LOGPLUGIN_H
